<template class="task-template">
  <section id="protocol-section" class="section js-section u-category-system">
    <header class="section-header">
      <div class="section-wrapper">
        <h1>
          <svg class="section-icon"><use xlink:href="assets/img/icons.svg#icon-system"></use></svg>
          协议处理器
        </h1>
        <h3><code>app</code> 模块提供了处理协议的方法.</h3>
        <p>这些方法允许您设置协议和取消协议, 来让你的应用成为默认的应用程序. 类似于当浏览器请求您查看网页时的默认值.</p>

        <p>在浏览器中查看 <a href="http://electron.atom.io/docs/api/app">完整 app API 文档<span class="u-visible-to-screen-reader">(在新窗口中打开</span></a>.</p>
      </div>
    </header>

    <div class="demo">
      <div class="demo-wrapper">
        <button id="copy-to-demo-toggle" class="js-container-target demo-toggle-button">从其他应用中的 URL 启动应用
          <div class="demo-meta u-avoid-clicks">支持: Win, macOS <span class="demo-meta-divider">|</span> 进程: Main</div>
        </button>
        <div class="demo-box">
          <div class="demo-controls">
            <button class="demo-button" id="protocol-handler">查看示例</button>
          </div>
          <p>您可以将应用设置为针对特定协议打开的默认应用. 例如, 在这个示例中我们将此应用程序设置为 <code>electron-api-demos://</code> 的默认值. 上面的示例按钮将在默认浏览器中启动一个带有链接的页面. 点击那个链接，它将重新启动此应用程序.</p>
          <h5>打包</h5>
          <p>这个功能只能在 macOS 上使用, 而且需要将应用打包. 如果你以开发模式从命令行启动, 它将无法使用.
            当您打包应用程序时, 您需要确保应用程序的 macOS <code>plist</code> 已更新为包含新的协议处理器.
            如果您使用 <code>electron-packager</code>, 那么您可以添加 <code>--extend-info</code> 标记,
            并在其中包含您创建的 <code>plist</code>. 当前程序用例如下:</p>
          <h5>渲染器进程</h5>
          <pre><code data-path="renderer-process/system/protocol-handler.js"></code></pre>
          <h5>主进程</h5>
          <pre><code data-path="main-process/system/protocol-handler.js"></code></pre>
          <h5>macOS plist</h5>
          <pre><code class="language-xml" data-path="assets/mac/info.plist"></code></pre>
        </div>
      </div>
    </div>


    <script type="text/javascript">
      require('./renderer-process/system/protocol-handler')
    </script>

  </section>
</template>
